ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ಗಳನ್ನು ಅನ್ವೇಷಿಸಿ. ಸ್ಥಳೀಯವಾಗಿ ಉತ್ತಮ ಆಯ್ಕೆಗಳು ಡೈಕ್ಸ್ಟ್ರಾ ಮತ್ತು ಹಫ್ಮನ್ ಕೋಡಿಂಗ್ನಂತಹ ಸಂಕೀರ್ಣ ಆಪ್ಟಿಮೈಸೇಶನ್ ಸಮಸ್ಯೆಗಳನ್ನು ಹೇಗೆ ಪರಿಹರಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ತಿಳಿಯಿರಿ.
ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ಗಳು: ಜಾಗತಿಕ ಪರಿಹಾರಗಳಿಗಾಗಿ ಸ್ಥಳೀಯವಾಗಿ ಉತ್ತಮ ಆಯ್ಕೆಗಳನ್ನು ಮಾಡುವ ಕಲೆ
ಕಂಪ್ಯೂಟರ್ ವಿಜ್ಞಾನ ಮತ್ತು ಸಮಸ್ಯೆ-ಪರಿಹಾರದ ವಿಶಾಲ ಜಗತ್ತಿನಲ್ಲಿ, ನಾವು ನಿರಂತರವಾಗಿ ದಕ್ಷತೆಗಾಗಿ ಹುಡುಕುತ್ತಿರುತ್ತೇವೆ. ನಮಗೆ ಕೇವಲ ಸರಿಯಾದ ಅಲ್ಗಾರಿದಮ್ಗಳು ಮಾತ್ರವಲ್ಲ, ವೇಗವಾದ ಮತ್ತು ಸಂಪನ್ಮೂಲ-ದಕ್ಷವಾದ ಅಲ್ಗಾರಿದಮ್ಗಳು ಬೇಕು. ಅಲ್ಗಾರಿದಮ್ಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವ ವಿವಿಧ ಮಾದರಿಗಳಲ್ಲಿ, ಗ್ರೀಡಿ ವಿಧಾನವು ತನ್ನ ಸರಳತೆ ಮತ್ತು ಸೊಬಗಿಗಾಗಿ ಎದ್ದು ಕಾಣುತ್ತದೆ. ಅದರ ತಿರುಳಿನಲ್ಲಿ, ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ ಆ ಕ್ಷಣಕ್ಕೆ ಉತ್ತಮವೆಂದು ತೋರುವ ಆಯ್ಕೆಯನ್ನು ಮಾಡುತ್ತದೆ. ಇದು ಸ್ಥಳೀಯ ಆಪ್ಟಿಮಾಗಳ ಸರಣಿಯು ಜಾಗತಿಕವಾಗಿ ಅತ್ಯುತ್ತಮ ಪರಿಹಾರಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ ಎಂಬ ಭರವಸೆಯಲ್ಲಿ ಸ್ಥಳೀಯವಾಗಿ ಅತ್ಯುತ್ತಮ ಆಯ್ಕೆಯನ್ನು ಮಾಡುವ ಒಂದು ತಂತ್ರವಾಗಿದೆ.
ಆದರೆ ಈ ಸಹಜ, ದೂರದೃಷ್ಟಿಯಿಲ್ಲದ ವಿಧಾನವು ಯಾವಾಗ ನಿಜವಾಗಿಯೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ? ಮತ್ತು ಇದು ನಮ್ಮನ್ನು ಅತ್ಯುತ್ತಮವಾದುದಕ್ಕಿಂತ ದೂರವಿರುವ ದಾರಿಯಲ್ಲಿ ಯಾವಾಗ ಕೊಂಡೊಯ್ಯುತ್ತದೆ? ಈ ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿಯು ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ಗಳ ಹಿಂದಿನ ತತ್ವವನ್ನು ಅನ್ವೇಷಿಸುತ್ತದೆ, ಕ್ಲಾಸಿಕ್ ಉದಾಹರಣೆಗಳ ಮೂಲಕ ಸಾಗುತ್ತದೆ, ಅವುಗಳ ನೈಜ-ಪ್ರಪಂಚದ ಅನ್ವಯಗಳನ್ನು ಎತ್ತಿ ತೋರಿಸುತ್ತದೆ ಮತ್ತು ಅವು ಯಶಸ್ವಿಯಾಗುವ ನಿರ್ಣಾಯಕ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಸ್ಪಷ್ಟಪಡಿಸುತ್ತದೆ.
ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ನ ಮೂಲ ತತ್ವ
ನೀವು ಒಬ್ಬ ಕ್ಯಾಷಿಯರ್ ಆಗಿದ್ದು, ಗ್ರಾಹಕರಿಗೆ ಚಿಲ್ಲರೆ ನೀಡುವ ಜವಾಬ್ದಾರಿ ಇದೆ ಎಂದು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಸಾಧ್ಯವಾದಷ್ಟು ಕಡಿಮೆ ನಾಣ್ಯಗಳನ್ನು ಬಳಸಿ ನೀವು ನಿರ್ದಿಷ್ಟ ಮೊತ್ತವನ್ನು ನೀಡಬೇಕು. ಸಹಜವಾಗಿ, ನೀವು ಅಗತ್ಯವಿರುವ ಮೊತ್ತವನ್ನು ಮೀರದ ಅತಿದೊಡ್ಡ ಮೌಲ್ಯದ ನಾಣ್ಯವನ್ನು (ಉದಾ., ಒಂದು ಕ್ವಾರ್ಟರ್) ನೀಡಲು ಪ್ರಾರಂಭಿಸುತ್ತೀರಿ. ನೀವು ಶೂನ್ಯವನ್ನು ತಲುಪುವವರೆಗೆ ಉಳಿದ ಮೊತ್ತದೊಂದಿಗೆ ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸುತ್ತೀರಿ. ಇದು ಗ್ರೀಡಿ ತಂತ್ರದ ಕ್ರಿಯೆಯಾಗಿದೆ. ಭವಿಷ್ಯದ ಪರಿಣಾಮಗಳ ಬಗ್ಗೆ ಚಿಂತಿಸದೆ ನೀವು ಈ ಕ್ಷಣದಲ್ಲಿ ಲಭ್ಯವಿರುವ ಅತ್ಯುತ್ತಮ ಆಯ್ಕೆಯನ್ನು ಮಾಡುತ್ತೀರಿ.
ಈ ಸರಳ ಉದಾಹರಣೆಯು ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ನ ಪ್ರಮುಖ ಅಂಶಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತದೆ:
- ಅಭ್ಯರ್ಥಿ ಸೆಟ್ (Candidate Set): ಪರಿಹಾರವನ್ನು ರಚಿಸುವ ವಸ್ತುಗಳು ಅಥವಾ ಆಯ್ಕೆಗಳ ಒಂದು ಸಂಗ್ರಹ (ಉದಾ., ಲಭ್ಯವಿರುವ ನಾಣ್ಯ ಮೌಲ್ಯಗಳ ಸೆಟ್).
- ಆಯ್ಕೆ ಕಾರ್ಯ (Selection Function): ಯಾವುದೇ ಹಂತದಲ್ಲಿ ಮಾಡಬೇಕಾದ ಅತ್ಯುತ್ತಮ ಆಯ್ಕೆಯನ್ನು ನಿರ್ಧರಿಸುವ ನಿಯಮ. ಇದು ಗ್ರೀಡಿ ತಂತ್ರದ ಹೃದಯವಾಗಿದೆ (ಉದಾ., ಅತಿದೊಡ್ಡ ನಾಣ್ಯವನ್ನು ಆರಿಸಿ).
- ಕಾರ್ಯಸಾಧ್ಯತೆ ಕಾರ್ಯ (Feasibility Function): ಸಮಸ್ಯೆಯ ನಿರ್ಬಂಧಗಳನ್ನು ಉಲ್ಲಂಘಿಸದೆ ಪ್ರಸ್ತುತ ಪರಿಹಾರಕ್ಕೆ ಅಭ್ಯರ್ಥಿ ಆಯ್ಕೆಯನ್ನು ಸೇರಿಸಬಹುದೇ ಎಂದು ನಿರ್ಧರಿಸಲು ಒಂದು ಪರಿಶೀಲನೆ (ಉದಾ., ನಾಣ್ಯದ ಮೌಲ್ಯವು ಉಳಿದ ಮೊತ್ತಕ್ಕಿಂತ ಹೆಚ್ಚಿಲ್ಲ).
- ಉದ್ದೇಶ ಕಾರ್ಯ (Objective Function): ನಾವು ಆಪ್ಟಿಮೈಜ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ ಮೌಲ್ಯ - ಗರಿಷ್ಠಗೊಳಿಸುವುದು ಅಥವಾ ಕನಿಷ್ಠಗೊಳಿಸುವುದು (ಉದಾ., ಬಳಸಿದ ನಾಣ್ಯಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು).
- ಪರಿಹಾರ ಕಾರ್ಯ (Solution Function): ನಾವು ಸಂಪೂರ್ಣ ಪರಿಹಾರವನ್ನು ತಲುಪಿದ್ದೇವೆಯೇ ಎಂದು ನಿರ್ಧರಿಸುವ ಕಾರ್ಯ (ಉದಾ., ಉಳಿದ ಮೊತ್ತವು ಶೂನ್ಯವಾಗಿದೆ).
ಗ್ರೀಡಿ ವಿಧಾನವು ಯಾವಾಗ ನಿಜವಾಗಿಯೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ?
ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ಗಳೊಂದಿಗೆ ಇರುವ ಅತಿದೊಡ್ಡ ಸವಾಲು ಅವುಗಳ ನಿಖರತೆಯನ್ನು ಸಾಬೀತುಪಡಿಸುವುದು. ಒಂದು ಸೆಟ್ ಇನ್ಪುಟ್ಗಳಿಗೆ ಕೆಲಸ ಮಾಡುವ ಅಲ್ಗಾರಿದಮ್ ಮತ್ತೊಂದಕ್ಕೆ ಅದ್ಭುತವಾಗಿ ವಿಫಲವಾಗಬಹುದು. ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ ಸಾಬೀತಾಗಿ ಅತ್ಯುತ್ತಮವಾಗಿರಲು, ಅದು ಪರಿಹರಿಸುತ್ತಿರುವ ಸಮಸ್ಯೆಯು ಸಾಮಾನ್ಯವಾಗಿ ಎರಡು ಪ್ರಮುಖ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪ್ರದರ್ಶಿಸಬೇಕು:
- ಗ್ರೀಡಿ ಚಾಯ್ಸ್ ಪ್ರಾಪರ್ಟಿ (Greedy Choice Property): ಈ ಗುಣಲಕ್ಷಣವು ಸ್ಥಳೀಯವಾಗಿ ಅತ್ಯುತ್ತಮ (ಗ್ರೀಡಿ) ಆಯ್ಕೆಯನ್ನು ಮಾಡುವ ಮೂಲಕ ಜಾಗತಿಕವಾಗಿ ಅತ್ಯುತ್ತಮ ಪರಿಹಾರವನ್ನು ತಲುಪಬಹುದು ಎಂದು ಹೇಳುತ್ತದೆ. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಪ್ರಸ್ತುತ ಹಂತದಲ್ಲಿ ಮಾಡಿದ ಆಯ್ಕೆಯು ಒಟ್ಟಾರೆ ಅತ್ಯುತ್ತಮ ಪರಿಹಾರವನ್ನು ತಲುಪದಂತೆ ನಮ್ಮನ್ನು ತಡೆಯುವುದಿಲ್ಲ. ಪ್ರಸ್ತುತ ಆಯ್ಕೆಯಿಂದ ಭವಿಷ್ಯಕ್ಕೆ ಯಾವುದೇ ಧಕ್ಕೆಯಾಗುವುದಿಲ್ಲ.
- ಆಪ್ಟಿಮಲ್ ಸಬ್ಸ್ಟ್ರಕ್ಚರ್ (Optimal Substructure): ಒಟ್ಟಾರೆ ಸಮಸ್ಯೆಗೆ ಒಂದು ಅತ್ಯುತ್ತಮ ಪರಿಹಾರವು ಅದರ ಉಪ-ಸಮಸ್ಯೆಗಳಿಗೆ ಅತ್ಯುತ್ತಮ ಪರಿಹಾರಗಳನ್ನು ಒಳಗೊಂಡಿದ್ದರೆ ಆ ಸಮಸ್ಯೆಯು ಆಪ್ಟಿಮಲ್ ಸಬ್ಸ್ಟ್ರಕ್ಚರ್ ಅನ್ನು ಹೊಂದಿದೆ. ಗ್ರೀಡಿ ಆಯ್ಕೆಯನ್ನು ಮಾಡಿದ ನಂತರ, ನಮಗೆ ಒಂದು ಚಿಕ್ಕ ಉಪ-ಸಮಸ್ಯೆ ಉಳಿಯುತ್ತದೆ. ನಾವು ಈ ಉಪ-ಸಮಸ್ಯೆಯನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿ ಪರಿಹರಿಸಿದರೆ, ಮತ್ತು ಅದನ್ನು ನಮ್ಮ ಗ್ರೀಡಿ ಆಯ್ಕೆಯೊಂದಿಗೆ ಸಂಯೋಜಿಸಿದರೆ, ನಮಗೆ ಜಾಗತಿಕ ಆಪ್ಟಿಮಮ್ ಸಿಗುತ್ತದೆ ಎಂದು ಆಪ್ಟಿಮಲ್ ಸಬ್ಸ್ಟ್ರಕ್ಚರ್ ಗುಣಲಕ್ಷಣವು ಸೂಚಿಸುತ್ತದೆ.
ಈ ಪರಿಸ್ಥಿತಿಗಳು ನಿಜವಾಗಿದ್ದರೆ, ಗ್ರೀಡಿ ವಿಧಾನವು ಕೇವಲ ಒಂದು ಹ್ಯೂರಿಸ್ಟಿಕ್ ಅಲ್ಲ; ಇದು ಅತ್ಯುತ್ತಮ ಪರಿಹಾರಕ್ಕೆ ಖಾತರಿಯಾದ ಮಾರ್ಗವಾಗಿದೆ. ಕೆಲವು ಕ್ಲಾಸಿಕ್ ಉದಾಹರಣೆಗಳೊಂದಿಗೆ ಇದನ್ನು ಕ್ರಿಯೆಯಲ್ಲಿ ನೋಡೋಣ.
ಕ್ಲಾಸಿಕ್ ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ ಉದಾಹರಣೆಗಳ ವಿವರಣೆ
ಉದಾಹರಣೆ 1: ಚಿಲ್ಲರೆ ನೀಡುವ ಸಮಸ್ಯೆ (The Change-Making Problem)
ನಾವು ಚರ್ಚಿಸಿದಂತೆ, ಚಿಲ್ಲರೆ ನೀಡುವ ಸಮಸ್ಯೆಯು ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ಗಳಿಗೆ ಒಂದು ಕ್ಲಾಸಿಕ್ ಪರಿಚಯವಾಗಿದೆ. ನಿರ್ದಿಷ್ಟ ಮುಖಬೆಲೆಯ ನಾಣ್ಯಗಳ ಗುಂಪಿನಿಂದ ಸಾಧ್ಯವಾದಷ್ಟು ಕಡಿಮೆ ನಾಣ್ಯಗಳನ್ನು ಬಳಸಿ ಒಂದು ನಿರ್ದಿಷ್ಟ ಮೊತ್ತಕ್ಕೆ ಚಿಲ್ಲರೆ ನೀಡುವುದು ಇದರ ಗುರಿಯಾಗಿದೆ.
ಗ್ರೀಡಿ ವಿಧಾನ: ಪ್ರತಿ ಹಂತದಲ್ಲೂ, ನೀಡಬೇಕಾದ ಉಳಿದ ಮೊತ್ತಕ್ಕಿಂತ ಕಡಿಮೆ ಅಥವಾ ಸಮನಾಗಿರುವ ಅತಿದೊಡ್ಡ ನಾಣ್ಯದ ಮುಖಬೆಲೆಯನ್ನು ಆರಿಸಿ.
ಇದು ಯಾವಾಗ ಕೆಲಸ ಮಾಡುತ್ತದೆ: US ಡಾಲರ್ (1, 5, 10, 25 ಸೆಂಟ್ಸ್) ಅಥವಾ ಯೂರೋ (1, 2, 5, 10, 20, 50 ಸೆಂಟ್ಸ್) ನಂತಹ ಪ್ರಮಾಣಿತ ಕ್ಯಾನೋನಿಕಲ್ ನಾಣ್ಯ ವ್ಯವಸ್ಥೆಗಳಿಗೆ, ಈ ಗ್ರೀಡಿ ವಿಧಾನವು ಯಾವಾಗಲೂ ಅತ್ಯುತ್ತಮವಾಗಿರುತ್ತದೆ. 48 ಸೆಂಟ್ಸ್ಗೆ ಚಿಲ್ಲರೆ ಮಾಡೋಣ:
- ಮೊತ್ತ: 48. 48 ಕ್ಕಿಂತ ಕಡಿಮೆ ಅಥವಾ ಸಮನಾದ ಅತಿದೊಡ್ಡ ನಾಣ್ಯ 25. ಒಂದು 25c ನಾಣ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಉಳಿದದ್ದು: 23.
- ಮೊತ್ತ: 23. 23 ಕ್ಕಿಂತ ಕಡಿಮೆ ಅಥವಾ ಸಮನಾದ ಅತಿದೊಡ್ಡ ನಾಣ್ಯ 10. ಒಂದು 10c ನಾಣ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಉಳಿದದ್ದು: 13.
- ಮೊತ್ತ: 13. 13 ಕ್ಕಿಂತ ಕಡಿಮೆ ಅಥವಾ ಸಮನಾದ ಅತಿದೊಡ್ಡ ನಾಣ್ಯ 10. ಒಂದು 10c ನಾಣ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಉಳಿದದ್ದು: 3.
- ಮೊತ್ತ: 3. 3 ಕ್ಕಿಂತ ಕಡಿಮೆ ಅಥವಾ ಸಮನಾದ ಅತಿದೊಡ್ಡ ನಾಣ್ಯ 1. ಮೂರು 1c ನಾಣ್ಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಉಳಿದದ್ದು: 0.
ಪರಿಹಾರವು {25, 10, 10, 1, 1, 1}, ಒಟ್ಟು 6 ನಾಣ್ಯಗಳು. ಇದು ನಿಜಕ್ಕೂ ಅತ್ಯುತ್ತಮ ಪರಿಹಾರವಾಗಿದೆ.
ಇದು ಯಾವಾಗ ವಿಫಲವಾಗುತ್ತದೆ: ಗ್ರೀಡಿ ತಂತ್ರದ ಯಶಸ್ಸು ನಾಣ್ಯ ವ್ಯವಸ್ಥೆಯನ್ನು ಹೆಚ್ಚು ಅವಲಂಬಿಸಿರುತ್ತದೆ. {1, 7, 10} ಮುಖಬೆಲೆಗಳಿರುವ ವ್ಯವಸ್ಥೆಯನ್ನು ಪರಿಗಣಿಸಿ. 15 ಸೆಂಟ್ಸ್ಗೆ ಚಿಲ್ಲರೆ ಮಾಡೋಣ.
- ಗ್ರೀಡಿ ಪರಿಹಾರ:
- ಒಂದು 10c ನಾಣ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಉಳಿದದ್ದು: 5.
- ಐದು 1c ನಾಣ್ಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಉಳಿದದ್ದು: 0.
- ಅತ್ಯುತ್ತಮ ಪರಿಹಾರ:
- ಒಂದು 7c ನಾಣ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಉಳಿದದ್ದು: 8.
- ಒಂದು 7c ನಾಣ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಉಳಿದದ್ದು: 1.
- ಒಂದು 1c ನಾಣ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಉಳಿದದ್ದು: 0.
ಈ ಪ್ರತಿದಾಖಲೆಯು ಒಂದು ನಿರ್ಣಾಯಕ ಪಾಠವನ್ನು ತೋರಿಸುತ್ತದೆ: ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ ಸಾರ್ವತ್ರಿಕ ಪರಿಹಾರವಲ್ಲ. ಅದರ ನಿಖರತೆಯನ್ನು ಪ್ರತಿ ನಿರ್ದಿಷ್ಟ ಸಮಸ್ಯೆಯ ಸನ್ನಿವೇಶಕ್ಕೆ ಮೌಲ್ಯಮಾಪನ ಮಾಡಬೇಕು. ಈ ಕ್ಯಾನೋನಿಕಲ್ ಅಲ್ಲದ ನಾಣ್ಯ ವ್ಯವಸ್ಥೆಗೆ, ಅತ್ಯುತ್ತಮ ಪರಿಹಾರವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಡೈನಾಮಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಂತಹ ಹೆಚ್ಚು ಶಕ್ತಿಶಾಲಿ ತಂತ್ರದ ಅಗತ್ಯವಿರುತ್ತದೆ.
ಉದಾಹರಣೆ 2: ಫ್ರ್ಯಾಕ್ಷನಲ್ ನ್ಯಾಪ್ಸ್ಯಾಕ್ ಸಮಸ್ಯೆ (The Fractional Knapsack Problem)
ಈ ಸಮಸ್ಯೆಯು ಕಳ್ಳನೊಬ್ಬನು ಗರಿಷ್ಠ ತೂಕದ ಸಾಮರ್ಥ್ಯವಿರುವ ಬೆನ್ನುಚೀಲವನ್ನು ಹೊಂದಿದ್ದು, ಪ್ರತಿಯೊಂದಕ್ಕೂ ತನ್ನದೇ ಆದ ತೂಕ ಮತ್ತು ಮೌಲ್ಯವಿರುವ ವಸ್ತುಗಳ ಗುಂಪನ್ನು ಕಂಡುಕೊಳ್ಳುವ ಸನ್ನಿವೇಶವನ್ನು ಪ್ರಸ್ತುತಪಡಿಸುತ್ತದೆ. ಬೆನ್ನುಚೀಲದಲ್ಲಿರುವ ವಸ್ತುಗಳ ಒಟ್ಟು ಮೌಲ್ಯವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುವುದು ಗುರಿಯಾಗಿದೆ. ಫ್ರ್ಯಾಕ್ಷನಲ್ ಆವೃತ್ತಿಯಲ್ಲಿ, ಕಳ್ಳನು ವಸ್ತುವಿನ ಭಾಗಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು.
ಗ್ರೀಡಿ ವಿಧಾನ: ಅತ್ಯಂತ ಸಹಜವಾದ ಗ್ರೀಡಿ ತಂತ್ರವೆಂದರೆ ಅತ್ಯಂತ ಮೌಲ್ಯಯುತ ವಸ್ತುಗಳಿಗೆ ಆದ್ಯತೆ ನೀಡುವುದು. ಆದರೆ ಯಾವುದಕ್ಕೆ ಹೋಲಿಸಿದರೆ ಮೌಲ್ಯಯುತ? ಒಂದು ದೊಡ್ಡ, ಭಾರವಾದ ವಸ್ತು ಮೌಲ್ಯಯುತವಾಗಿರಬಹುದು ಆದರೆ ಹೆಚ್ಚು ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಪ್ರತಿ ವಸ್ತುವಿಗೆ ಮೌಲ್ಯ-ತೂಕದ ಅನುಪಾತವನ್ನು (ಮೌಲ್ಯ/ತೂಕ) ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದು ಪ್ರಮುಖ ಒಳನೋಟವಾಗಿದೆ.
ಗ್ರೀಡಿ ತಂತ್ರವೆಂದರೆ: ಪ್ರತಿ ಹಂತದಲ್ಲೂ, ಅತಿ ಹೆಚ್ಚು ಉಳಿದ ಮೌಲ್ಯ-ತೂಕದ ಅನುಪಾತವನ್ನು ಹೊಂದಿರುವ ವಸ್ತುವಿನಿಂದ ಸಾಧ್ಯವಾದಷ್ಟು ತೆಗೆದುಕೊಳ್ಳಿ.
ಉದಾಹರಣೆ ವಿವರಣೆ:
- ಬೆನ್ನುಚೀಲದ ಸಾಮರ್ಥ್ಯ: 50 ಕೆಜಿ
- ವಸ್ತುಗಳು:
- ವಸ್ತು A: 10 ಕೆಜಿ, $60 ಮೌಲ್ಯ (ಅನುಪಾತ: 6 $/ಕೆಜಿ)
- ವಸ್ತು B: 20 ಕೆಜಿ, $100 ಮೌಲ್ಯ (ಅನುಪಾತ: 5 $/ಕೆಜಿ)
- ವಸ್ತು C: 30 ಕೆಜಿ, $120 ಮೌಲ್ಯ (ಅನುಪಾತ: 4 $/ಕೆಜಿ)
ಪರಿಹಾರದ ಹಂತಗಳು:
- ವಸ್ತುಗಳನ್ನು ಮೌಲ್ಯ-ತೂಕದ ಅನುಪಾತದ ಪ್ರಕಾರ ಇಳಿಕೆಯ ಕ್ರಮದಲ್ಲಿ ವಿಂಗಡಿಸಿ: A (6), B (5), C (4).
- ವಸ್ತು A ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಇದು ಅತಿ ಹೆಚ್ಚು ಅನುಪಾತವನ್ನು ಹೊಂದಿದೆ. ಎಲ್ಲಾ 10 ಕೆಜಿ ತೆಗೆದುಕೊಳ್ಳಿ. ಬೆನ್ನುಚೀಲದಲ್ಲಿ ಈಗ 10 ಕೆಜಿ, ಮೌಲ್ಯ $60 ಇದೆ. ಉಳಿದ ಸಾಮರ್ಥ್ಯ: 40 ಕೆಜಿ.
- ವಸ್ತು B ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಇದು ಮುಂದಿನದು. ಎಲ್ಲಾ 20 ಕೆಜಿ ತೆಗೆದುಕೊಳ್ಳಿ. ಬೆನ್ನುಚೀಲದಲ್ಲಿ ಈಗ 30 ಕೆಜಿ, ಮೌಲ್ಯ $160 ಇದೆ. ಉಳಿದ ಸಾಮರ್ಥ್ಯ: 20 ಕೆಜಿ.
- ವಸ್ತು C ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ. ಇದು ಕೊನೆಯದು. ನಮ್ಮ ಬಳಿ ಕೇವಲ 20 ಕೆಜಿ ಸಾಮರ್ಥ್ಯ ಉಳಿದಿದೆ, ಆದರೆ ವಸ್ತುವು 30 ಕೆಜಿ ತೂಗುತ್ತದೆ. ನಾವು ವಸ್ತು C ಯ ಒಂದು ಭಾಗವನ್ನು (20/30) ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ಇದು 20 ಕೆಜಿ ತೂಕ ಮತ್ತು (20/30) * $120 = $80 ಮೌಲ್ಯವನ್ನು ಸೇರಿಸುತ್ತದೆ.
ಅಂತಿಮ ಫಲಿತಾಂಶ: ಬೆನ್ನುಚೀಲವು ಪೂರ್ಣವಾಗಿದೆ (10 + 20 + 20 = 50 ಕೆಜಿ). ಒಟ್ಟು ಮೌಲ್ಯ $60 + $100 + $80 = $240. ಇದು ಅತ್ಯುತ್ತಮ ಪರಿಹಾರವಾಗಿದೆ. ಗ್ರೀಡಿ ಚಾಯ್ಸ್ ಪ್ರಾಪರ್ಟಿ ಇಲ್ಲಿ ಅನ್ವಯಿಸುತ್ತದೆ ಏಕೆಂದರೆ ಯಾವಾಗಲೂ ಅತ್ಯಂತ "ದಟ್ಟವಾದ" ಮೌಲ್ಯವನ್ನು ಮೊದಲು ತೆಗೆದುಕೊಳ್ಳುವ ಮೂಲಕ, ನಾವು ನಮ್ಮ ಸೀಮಿತ ಸಾಮರ್ಥ್ಯವನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ದಕ್ಷವಾಗಿ ತುಂಬುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುತ್ತೇವೆ.
ಉದಾಹರಣೆ 3: ಚಟುವಟಿಕೆ ಆಯ್ಕೆ ಸಮಸ್ಯೆ (Activity Selection Problem)
ನೀವು ಒಂದೇ ಸಂಪನ್ಮೂಲವನ್ನು (ಉದಾಹರಣೆಗೆ ಮೀಟಿಂಗ್ ರೂಮ್ ಅಥವಾ ಉಪನ್ಯಾಸ ಸಭಾಂಗಣ) ಮತ್ತು ಪ್ರತಿಯೊಂದಕ್ಕೂ ನಿರ್ದಿಷ್ಟ ಆರಂಭ ಮತ್ತು ಅಂತಿಮ ಸಮಯವನ್ನು ಹೊಂದಿರುವ ಪ್ರಸ್ತಾವಿತ ಚಟುವಟಿಕೆಗಳ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿದ್ದೀರಿ ಎಂದು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ನಿಮ್ಮ ಗುರಿಯು ಪರಸ್ಪರ ಪ್ರತ್ಯೇಕವಾದ (ಅತಿಕ್ರಮಿಸದ) ಚಟುವಟಿಕೆಗಳ ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು.
ಗ್ರೀಡಿ ವಿಧಾನ: ಉತ್ತಮ ಗ್ರೀಡಿ ಆಯ್ಕೆ ಯಾವುದು? ನಾವು ಕಡಿಮೆ ಅವಧಿಯ ಚಟುವಟಿಕೆಯನ್ನು ಆರಿಸಬೇಕೇ? ಅಥವಾ ಬೇಗನೆ ಪ್ರಾರಂಭವಾಗುವ ಚಟುವಟಿಕೆಯನ್ನೇ? ಸಾಬೀತಾದ ಅತ್ಯುತ್ತಮ ತಂತ್ರವೆಂದರೆ ಚಟುವಟಿಕೆಗಳನ್ನು ಅವುಗಳ ಮುಕ್ತಾಯದ ಸಮಯಗಳ ಪ್ರಕಾರ ಆರೋಹಣ ಕ್ರಮದಲ್ಲಿ ವಿಂಗಡಿಸುವುದು.
ಅಲ್ಗಾರಿದಮ್ ಈ ಕೆಳಗಿನಂತಿದೆ:
- ಎಲ್ಲಾ ಚಟುವಟಿಕೆಗಳನ್ನು ಅವುಗಳ ಮುಕ್ತಾಯದ ಸಮಯಗಳ ಆಧಾರದ ಮೇಲೆ ವಿಂಗಡಿಸಿ.
- ವಿಂಗಡಿಸಲಾದ ಪಟ್ಟಿಯಿಂದ ಮೊದಲ ಚಟುವಟಿಕೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಅದನ್ನು ನಿಮ್ಮ ಪರಿಹಾರಕ್ಕೆ ಸೇರಿಸಿ.
- ವಿಂಗಡಿಸಲಾದ ಉಳಿದ ಚಟುವಟಿಕೆಗಳ ಮೂಲಕ ಪುನರಾವರ್ತಿಸಿ. ಪ್ರತಿ ಚಟುವಟಿಕೆಗೆ, ಅದರ ಪ್ರಾರಂಭದ ಸಮಯವು ಹಿಂದೆ ಆಯ್ಕೆಮಾಡಿದ ಚಟುವಟಿಕೆಯ ಮುಕ್ತಾಯದ ಸಮಯಕ್ಕಿಂತ ಹೆಚ್ಚಿದ್ದರೆ ಅಥವಾ ಸಮನಾಗಿದ್ದರೆ, ಅದನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ನಿಮ್ಮ ಪರಿಹಾರಕ್ಕೆ ಸೇರಿಸಿ.
ಇದು ಏಕೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ? ಬೇಗನೆ ಮುಗಿಯುವ ಚಟುವಟಿಕೆಯನ್ನು ಆರಿಸುವ ಮೂಲಕ, ನಾವು ಸಂಪನ್ಮೂಲವನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಬೇಗ ಮುಕ್ತಗೊಳಿಸುತ್ತೇವೆ, ಇದರಿಂದಾಗಿ ನಂತರದ ಚಟುವಟಿಕೆಗಳಿಗೆ ಲಭ್ಯವಿರುವ ಸಮಯವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುತ್ತೇವೆ. ಈ ಆಯ್ಕೆಯು ಸ್ಥಳೀಯವಾಗಿ ಅತ್ಯುತ್ತಮವೆಂದು ತೋರುತ್ತದೆ ಏಕೆಂದರೆ ಇದು ಭವಿಷ್ಯಕ್ಕಾಗಿ ಹೆಚ್ಚಿನ ಅವಕಾಶವನ್ನು ನೀಡುತ್ತದೆ, ಮತ್ತು ಈ ತಂತ್ರವು ಜಾಗತಿಕ ಆಪ್ಟಿಮಮ್ಗೆ ಕಾರಣವಾಗುತ್ತದೆ ಎಂದು ಸಾಬೀತುಪಡಿಸಬಹುದು.
ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ಗಳು ಎಲ್ಲಿ ಮಿಂಚುತ್ತವೆ: ನೈಜ-ಪ್ರಪಂಚದ ಅನ್ವಯಗಳು
ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ಗಳು ಕೇವಲ ಶೈಕ್ಷಣಿಕ ವ್ಯಾಯಾಮಗಳಲ್ಲ; ಅವು ತಂತ್ರಜ್ಞಾನ ಮತ್ತು ಲಾಜಿಸ್ಟಿಕ್ಸ್ನಲ್ಲಿ ನಿರ್ಣಾಯಕ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುವ ಅನೇಕ ಪ್ರಸಿದ್ಧ ಅಲ್ಗಾರಿದಮ್ಗಳ ಬೆನ್ನೆಲುಬಾಗಿವೆ.
ಅತಿ ಕಡಿಮೆ ಮಾರ್ಗಗಳಿಗಾಗಿ ಡೈಕ್ಸ್ಟ್ರಾ ಅವರ ಅಲ್ಗಾರಿದಮ್
ನಿಮ್ಮ ಮನೆಯಿಂದ ಗಮ್ಯಸ್ಥಾನಕ್ಕೆ ವೇಗವಾದ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯಲು ನೀವು ಜಿಪಿಎಸ್ ಸೇವೆಯನ್ನು ಬಳಸುವಾಗ, ನೀವು ಬಹುಶಃ ಡೈಕ್ಸ್ಟ್ರಾ ಅವರ ಅಲ್ಗಾರಿದಮ್ನಿಂದ ಸ್ಫೂರ್ತಿ ಪಡೆದ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಬಳಸುತ್ತಿದ್ದೀರಿ. ಇದು ತೂಕದ ಗ್ರಾಫ್ನಲ್ಲಿ ನೋಡ್ಗಳ ನಡುವಿನ ಕಡಿಮೆ ಮಾರ್ಗಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಒಂದು ಕ್ಲಾಸಿಕ್ ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ ಆಗಿದೆ.
ಇದು ಹೇಗೆ ಗ್ರೀಡಿ: ಡೈಕ್ಸ್ಟ್ರಾ ಅವರ ಅಲ್ಗಾರಿದಮ್ ಭೇಟಿ ನೀಡಿದ ಶೃಂಗಗಳ (vertices) ಒಂದು ಗುಂಪನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಪ್ರತಿ ಹಂತದಲ್ಲೂ, ಇದು ಮೂಲಕ್ಕೆ ಹತ್ತಿರವಿರುವ ಭೇಟಿ ನೀಡದ ಶೃಂಗವನ್ನು ದುರಾಸೆಯಿಂದ ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ. ಈ ಹತ್ತಿರದ ಶೃಂಗಕ್ಕೆ ಕಡಿಮೆ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಿದೆ ಮತ್ತು ನಂತರ ಅದನ್ನು ಸುಧಾರಿಸಲಾಗುವುದಿಲ್ಲ ಎಂದು ಇದು ಊಹಿಸುತ್ತದೆ. ಇದು ಋಣಾತ್ಮಕವಲ್ಲದ ಅಂಚಿನ ತೂಕವನ್ನು ಹೊಂದಿರುವ ಗ್ರಾಫ್ಗಳಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
ಮಿನಿಮಮ್ ಸ್ಪ್ಯಾನಿಂಗ್ ಟ್ರೀ (MST) ಗಾಗಿ ಪ್ರಿಮ್ ಮತ್ತು ಕ್ರುಸ್ಕಲ್ ಅವರ ಅಲ್ಗಾರಿದಮ್ಗಳು
ಮಿನಿಮಮ್ ಸ್ಪ್ಯಾನಿಂಗ್ ಟ್ರೀ ಎನ್ನುವುದು ಸಂಪರ್ಕಿತ, ಅಂಚು-ತೂಕದ ಗ್ರಾಫ್ನ ಅಂಚುಗಳ ಒಂದು ಉಪವಿಭಾಗವಾಗಿದ್ದು, ಇದು ಎಲ್ಲಾ ಶೃಂಗಗಳನ್ನು ಒಟ್ಟಿಗೆ ಸಂಪರ್ಕಿಸುತ್ತದೆ, ಯಾವುದೇ ಚಕ್ರಗಳಿಲ್ಲದೆ ಮತ್ತು ಸಾಧ್ಯವಾದಷ್ಟು ಕಡಿಮೆ ಒಟ್ಟು ಅಂಚಿನ ತೂಕದೊಂದಿಗೆ. ನೆಟ್ವರ್ಕ್ ವಿನ್ಯಾಸದಲ್ಲಿ ಇದು ಬಹಳ ಉಪಯುಕ್ತವಾಗಿದೆ - ಉದಾಹರಣೆಗೆ, ಕನಿಷ್ಠ ಪ್ರಮಾಣದ ಕೇಬಲ್ನೊಂದಿಗೆ ಹಲವಾರು ನಗರಗಳನ್ನು ಸಂಪರ್ಕಿಸಲು ಫೈಬರ್ ಆಪ್ಟಿಕ್ ಕೇಬಲ್ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಹಾಕುವುದು.
- ಪ್ರಿಮ್ ಅವರ ಅಲ್ಗಾರಿದಮ್ ಗ್ರೀಡಿ ಆಗಿದೆ ಏಕೆಂದರೆ ಇದು ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದು ಶೃಂಗವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ MST ಅನ್ನು ಬೆಳೆಸುತ್ತದೆ. ಪ್ರತಿ ಹಂತದಲ್ಲೂ, ಇದು ಬೆಳೆಯುತ್ತಿರುವ ಮರದಲ್ಲಿನ ಶೃಂಗವನ್ನು ಮರದ ಹೊರಗಿನ ಶೃಂಗಕ್ಕೆ ಸಂಪರ್ಕಿಸುವ ಅಗ್ಗದ ಸಂಭವನೀಯ ಅಂಚನ್ನು ಸೇರಿಸುತ್ತದೆ.
- ಕ್ರುಸ್ಕಲ್ ಅವರ ಅಲ್ಗಾರಿದಮ್ ಸಹ ಗ್ರೀಡಿ ಆಗಿದೆ. ಇದು ಗ್ರಾಫ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಅಂಚುಗಳನ್ನು ತೂಕದ ಪ್ರಕಾರ ಆರೋಹಣ ಕ್ರಮದಲ್ಲಿ ವಿಂಗಡಿಸುತ್ತದೆ. ನಂತರ ಅದು ವಿಂಗಡಿಸಲಾದ ಅಂಚುಗಳ ಮೂಲಕ ಪುನರಾವರ್ತಿಸುತ್ತದೆ, ಈಗಾಗಲೇ ಆಯ್ಕೆಮಾಡಿದ ಅಂಚುಗಳೊಂದಿಗೆ ಚಕ್ರವನ್ನು ರಚಿಸದಿದ್ದರೆ ಮಾತ್ರ ಮರಕ್ಕೆ ಅಂಚನ್ನು ಸೇರಿಸುತ್ತದೆ.
ಎರಡೂ ಅಲ್ಗಾರಿದಮ್ಗಳು ಸ್ಥಳೀಯವಾಗಿ ಅತ್ಯುತ್ತಮ ಆಯ್ಕೆಗಳನ್ನು (ಅಗ್ಗದ ಅಂಚನ್ನು ಆರಿಸುವುದು) ಮಾಡುತ್ತವೆ, ಅದು ಜಾಗತಿಕವಾಗಿ ಅತ್ಯುತ್ತಮವಾದ MSTಗೆ ಕಾರಣವಾಗುತ್ತದೆ ಎಂದು ಸಾಬೀತಾಗಿದೆ.
ಡೇಟಾ ಕಂಪ್ರೆಷನ್ಗಾಗಿ ಹಫ್ಮನ್ ಕೋಡಿಂಗ್
ಹಫ್ಮನ್ ಕೋಡಿಂಗ್ ಎಂಬುದು ಲಾಸ್ಲೆಸ್ ಡೇಟಾ ಕಂಪ್ರೆಷನ್ನಲ್ಲಿ ಬಳಸಲಾಗುವ ಒಂದು ಮೂಲಭೂತ ಅಲ್ಗಾರಿದಮ್ ಆಗಿದೆ, ಇದನ್ನು ನೀವು ZIP ಫೈಲ್ಗಳು, JPEGಗಳು ಮತ್ತು MP3ಗಳಂತಹ ಫಾರ್ಮ್ಯಾಟ್ಗಳಲ್ಲಿ ಕಾಣುತ್ತೀರಿ. ಇದು ಇನ್ಪುಟ್ ಅಕ್ಷರಗಳಿಗೆ ವೇರಿಯಬಲ್-ಉದ್ದದ ಬೈನರಿ ಕೋಡ್ಗಳನ್ನು ನಿಯೋಜಿಸುತ್ತದೆ, ನಿಯೋಜಿಸಲಾದ ಕೋಡ್ಗಳ ಉದ್ದಗಳು ಅನುಗುಣವಾದ ಅಕ್ಷರಗಳ ಆವರ್ತನಗಳನ್ನು ಆಧರಿಸಿರುತ್ತವೆ.
ಇದು ಹೇಗೆ ಗ್ರೀಡಿ: ಈ ಅಲ್ಗಾರಿದಮ್ ಕೆಳಗಿನಿಂದ ಮೇಲಕ್ಕೆ ಬೈನರಿ ಮರವನ್ನು ನಿರ್ಮಿಸುತ್ತದೆ. ಇದು ಪ್ರತಿ ಅಕ್ಷರವನ್ನು ಲೀಫ್ ನೋಡ್ ಎಂದು ಪರಿಗಣಿಸುವ ಮೂಲಕ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ನಂತರ ಅದು ಕಡಿಮೆ ಆವರ್ತನಗಳನ್ನು ಹೊಂದಿರುವ ಎರಡು ನೋಡ್ಗಳನ್ನು ದುರಾಸೆಯಿಂದ ತೆಗೆದುಕೊಂಡು, ಅವುಗಳನ್ನು ಹೊಸ ಆಂತರಿಕ ನೋಡ್ಗೆ ವಿಲೀನಗೊಳಿಸುತ್ತದೆ, ಅದರ ಆವರ್ತನವು ಅದರ ಮಕ್ಕಳ ಆವರ್ತನಗಳ ಮೊತ್ತವಾಗಿರುತ್ತದೆ, ಮತ್ತು ಕೇವಲ ಒಂದು ನೋಡ್ (ರೂಟ್) ಉಳಿಯುವವರೆಗೆ ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸುತ್ತದೆ. ಕಡಿಮೆ ಆವರ್ತನದ ಅಕ್ಷರಗಳ ಈ ಗ್ರೀಡಿ ವಿಲೀನವು ಅತ್ಯಂತ ಆಗಾಗ್ಗೆ ಬರುವ ಅಕ್ಷರಗಳು ಕಡಿಮೆ ಬೈನರಿ ಕೋಡ್ಗಳನ್ನು ಹೊಂದುವಂತೆ ಮಾಡುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಅತ್ಯುತ್ತಮ ಸಂಕೋಚನ ಉಂಟಾಗುತ್ತದೆ.
ಅಪಾಯಗಳು: ಯಾವಾಗ ಗ್ರೀಡಿ ಆಗಬಾರದು
ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ಗಳ ಶಕ್ತಿಯು ಅವುಗಳ ವೇಗ ಮತ್ತು ಸರಳತೆಯಲ್ಲಿದೆ, ಆದರೆ ಇದಕ್ಕೆ ಒಂದು ಬೆಲೆ ಇದೆ: ಅವು ಯಾವಾಗಲೂ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ. ಗ್ರೀಡಿ ವಿಧಾನವು ಸೂಕ್ತವಲ್ಲದಿದ್ದಾಗ ಅದನ್ನು ಗುರುತಿಸುವುದು ಅದನ್ನು ಯಾವಾಗ ಬಳಸಬೇಕೆಂದು ತಿಳಿದುಕೊಳ್ಳುವಷ್ಟೇ ಮುಖ್ಯವಾಗಿದೆ.
ಸ್ಥಳೀಯವಾಗಿ ಅತ್ಯುತ್ತಮವಾದ ಆಯ್ಕೆಯು ನಂತರ ಉತ್ತಮ ಜಾಗತಿಕ ಪರಿಹಾರವನ್ನು ತಡೆಯುವಾಗ ಅತ್ಯಂತ ಸಾಮಾನ್ಯವಾದ ವೈಫಲ್ಯದ ಸನ್ನಿವೇಶವಾಗಿದೆ. ನಾವು ಇದನ್ನು ಈಗಾಗಲೇ ಕ್ಯಾನೋನಿಕಲ್ ಅಲ್ಲದ ನಾಣ್ಯ ವ್ಯವಸ್ಥೆಯೊಂದಿಗೆ ನೋಡಿದ್ದೇವೆ. ಇತರ ಪ್ರಸಿದ್ಧ ಉದಾಹರಣೆಗಳು ಸೇರಿವೆ:
- 0/1 ನ್ಯಾಪ್ಸ್ಯಾಕ್ ಸಮಸ್ಯೆ: ಇದು ನ್ಯಾಪ್ಸ್ಯಾಕ್ ಸಮಸ್ಯೆಯ ಆವೃತ್ತಿಯಾಗಿದ್ದು, ಇದರಲ್ಲಿ ನೀವು ವಸ್ತುವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ತೆಗೆದುಕೊಳ್ಳಬೇಕು ಅಥವಾ ತೆಗೆದುಕೊಳ್ಳಬಾರದು. ಮೌಲ್ಯ-ತೂಕದ ಅನುಪಾತದ ಗ್ರೀಡಿ ತಂತ್ರವು ವಿಫಲವಾಗಬಹುದು. 10 ಕೆಜಿ ನ್ಯಾಪ್ಸ್ಯಾಕ್ ಇದೆ ಎಂದು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ನಿಮ್ಮ ಬಳಿ 10 ಕೆಜಿ ತೂಕದ ಒಂದು ವಸ್ತು $100 ಮೌಲ್ಯದ್ದು (ಅನುಪಾತ 10) ಮತ್ತು ತಲಾ 6 ಕೆಜಿ ತೂಕದ ಎರಡು ವಸ್ತುಗಳು ತಲಾ $70 ಮೌಲ್ಯದ್ದು (ಅನುಪಾತ ~11.6) ಇವೆ. ಅನುಪಾತದ ಆಧಾರದ ಮೇಲೆ ಗ್ರೀಡಿ ವಿಧಾನವು 6 ಕೆಜಿ ವಸ್ತುಗಳಲ್ಲಿ ಒಂದನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, 4 ಕೆಜಿ ಜಾಗವನ್ನು ಬಿಟ್ಟು, ಒಟ್ಟು $70 ಮೌಲ್ಯಕ್ಕೆ. ಅತ್ಯುತ್ತಮ ಪರಿಹಾರವೆಂದರೆ $100 ಮೌಲ್ಯಕ್ಕಾಗಿ ಒಂದೇ 10 ಕೆಜಿ ವಸ್ತುವನ್ನು ತೆಗೆದುಕೊಳ್ಳುವುದು. ಈ ಸಮಸ್ಯೆಗೆ ಅತ್ಯುತ್ತಮ ಪರಿಹಾರಕ್ಕಾಗಿ ಡೈನಾಮಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅಗತ್ಯವಿದೆ.
- ಪ್ರಯಾಣಿಕ ಮಾರಾಟಗಾರನ ಸಮಸ್ಯೆ (TSP): ನಗರಗಳ ಒಂದು ಗುಂಪನ್ನು ಭೇಟಿ ಮಾಡಿ ಮೂಲಕ್ಕೆ ಹಿಂತಿರುಗುವ ಸಾಧ್ಯವಾದಷ್ಟು ಕಡಿಮೆ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ಗುರಿಯಾಗಿದೆ. "ಹತ್ತಿರದ ನೆರೆಹೊರೆಯವ" (Nearest Neighbor) ಹ್ಯೂರಿಸ್ಟಿಕ್ ಎಂಬ ಸರಳ ಗ್ರೀಡಿ ವಿಧಾನವೆಂದರೆ, ಯಾವಾಗಲೂ ಭೇಟಿ ನೀಡದ ಹತ್ತಿರದ ನಗರಕ್ಕೆ ಪ್ರಯಾಣಿಸುವುದು. ಇದು ವೇಗವಾಗಿದ್ದರೂ, ಇದು ಆಗಾಗ್ಗೆ ಅತ್ಯುತ್ತಮ ಪ್ರವಾಸಕ್ಕಿಂತ ಗಮನಾರ್ಹವಾಗಿ ಉದ್ದವಾದ ಪ್ರವಾಸಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಆರಂಭಿಕ ಆಯ್ಕೆಯು ನಂತರ ಬಹಳ ದೀರ್ಘ ಪ್ರಯಾಣಗಳನ್ನು ಒತ್ತಾಯಿಸಬಹುದು.
ಗ್ರೀಡಿ vs. ಇತರ ಅಲ್ಗಾರಿದಮಿಕ್ ಮಾದರಿಗಳು
ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ಗಳು ಇತರ ತಂತ್ರಗಳಿಗೆ ಹೇಗೆ ಹೋಲಿಕೆಯಾಗುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ನಿಮ್ಮ ಸಮಸ್ಯೆ-ಪರಿಹಾರದ ಟೂಲ್ಕಿಟ್ನಲ್ಲಿ ಅವುಗಳ ಸ್ಥಾನದ ಸ್ಪಷ್ಟ ಚಿತ್ರಣವನ್ನು ನೀಡುತ್ತದೆ.
ಗ್ರೀಡಿ vs. ಡೈನಾಮಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ (DP)
ಇದು ಅತ್ಯಂತ ನಿರ್ಣಾಯಕ ಹೋಲಿಕೆಯಾಗಿದೆ. ಎರಡೂ ತಂತ್ರಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಆಪ್ಟಿಮಲ್ ಸಬ್ಸ್ಟ್ರಕ್ಚರ್ನೊಂದಿಗೆ ಆಪ್ಟಿಮೈಸೇಶನ್ ಸಮಸ್ಯೆಗಳಿಗೆ ಅನ್ವಯಿಸುತ್ತವೆ. ಪ್ರಮುಖ ವ್ಯತ್ಯಾಸವು ನಿರ್ಧಾರ ತೆಗೆದುಕೊಳ್ಳುವ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿದೆ.
- ಗ್ರೀಡಿ: ಒಂದು ಆಯ್ಕೆಯನ್ನು ಮಾಡುತ್ತದೆ - ಸ್ಥಳೀಯವಾಗಿ ಅತ್ಯುತ್ತಮವಾದದ್ದು - ಮತ್ತು ನಂತರ ಉಂಟಾಗುವ ಉಪ-ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತದೆ. ಅದು ತನ್ನ ಆಯ್ಕೆಗಳನ್ನು ಎಂದಿಗೂ ಮರುಪರಿಶೀಲಿಸುವುದಿಲ್ಲ. ಇದು ಮೇಲಿನಿಂದ ಕೆಳಕ್ಕೆ, ಒಂದು-ಮಾರ್ಗದ ರಸ್ತೆಯಾಗಿದೆ.
- ಡೈನಾಮಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್: ಎಲ್ಲಾ ಸಂಭಾವ್ಯ ಆಯ್ಕೆಗಳನ್ನು ಅನ್ವೇಷಿಸುತ್ತದೆ. ಇದು ಎಲ್ಲಾ ಸಂಬಂಧಿತ ಉಪ-ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ಅವುಗಳಲ್ಲಿ ಅತ್ಯುತ್ತಮ ಆಯ್ಕೆಯನ್ನು ಆರಿಸುತ್ತದೆ. ಇದು ಕೆಳಗಿನಿಂದ ಮೇಲಕ್ಕೆ ಹೋಗುವ ವಿಧಾನವಾಗಿದ್ದು, ಉಪ-ಸಮಸ್ಯೆಗಳಿಗೆ ಪರಿಹಾರಗಳನ್ನು ಮರು-ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದನ್ನು ತಪ್ಪಿಸಲು ಸಾಮಾನ್ಯವಾಗಿ ಮೆಮೊೈಸೇಶನ್ ಅಥವಾ ಟ್ಯಾಬ್ಯುಲೇಶನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ.
ಸಾರಾಂಶದಲ್ಲಿ, DP ಹೆಚ್ಚು ಶಕ್ತಿಶಾಲಿ ಮತ್ತು ದೃಢವಾಗಿರುತ್ತದೆ ಆದರೆ ಸಾಮಾನ್ಯವಾಗಿ ಗಣನಾತ್ಮಕವಾಗಿ ಹೆಚ್ಚು ದುಬಾರಿಯಾಗಿದೆ. ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ನೀವು ಸರಿಯೆಂದು ಸಾಬೀತುಪಡಿಸಬಹುದಾದರೆ ಬಳಸಿ; ಇಲ್ಲದಿದ್ದರೆ, ಆಪ್ಟಿಮೈಸೇಶನ್ ಸಮಸ್ಯೆಗಳಿಗೆ DP ಸಾಮಾನ್ಯವಾಗಿ ಸುರಕ್ಷಿತ ಆಯ್ಕೆಯಾಗಿದೆ.
ಗ್ರೀಡಿ vs. ಬ್ರೂಟ್ ಫೋರ್ಸ್
ಬ್ರೂಟ್ ಫೋರ್ಸ್ ಪರಿಹಾರವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಪ್ರತಿಯೊಂದು ಸಂಭವನೀಯ ಸಂಯೋಜನೆಯನ್ನು ಪ್ರಯತ್ನಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಇದು ಸರಿಯೆಂದು ಖಾತರಿಪಡಿಸಲಾಗಿದೆ ಆದರೆ ಸಾಮಾನ್ಯವಾಗಿ ಕ್ಷುಲ್ಲಕವಲ್ಲದ ಸಮಸ್ಯೆ ಗಾತ್ರಗಳಿಗೆ ಅಸಾಧ್ಯವಾದಷ್ಟು ನಿಧಾನವಾಗಿರುತ್ತದೆ (ಉದಾ., TSPಯಲ್ಲಿ ಸಂಭವನೀಯ ಪ್ರವಾಸಗಳ ಸಂಖ್ಯೆಯು ಫ್ಯಾಕ್ಟೋರಿಯಲ್ ಆಗಿ ಬೆಳೆಯುತ್ತದೆ). ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ ಹ್ಯೂರಿಸ್ಟಿಕ್ ಅಥವಾ ಶಾರ್ಟ್ಕಟ್ನ ಒಂದು ರೂಪವಾಗಿದೆ. ಇದು ಪ್ರತಿ ಹಂತದಲ್ಲಿ ಒಂದು ಆಯ್ಕೆಗೆ ಬದ್ಧವಾಗಿರುವುದರಿಂದ ಹುಡುಕಾಟದ ಸ್ಥಳವನ್ನು ನಾಟಕೀಯವಾಗಿ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ, ಇದು ಹೆಚ್ಚು ದಕ್ಷವಾಗಿಸುತ್ತದೆ, ಆದರೂ ಯಾವಾಗಲೂ ಅತ್ಯುತ್ತಮವಾಗಿರುವುದಿಲ್ಲ.
ತೀರ್ಮಾನ: ಒಂದು ಶಕ್ತಿಯುತ ಆದರೆ ಇಬ್ಬಾಯಿಯ ಕತ್ತಿ
ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ಗಳು ಕಂಪ್ಯೂಟರ್ ವಿಜ್ಞಾನದಲ್ಲಿ ಒಂದು ಮೂಲಭೂತ ಪರಿಕಲ್ಪನೆಯಾಗಿದೆ. ಅವು ಆಪ್ಟಿಮೈಸೇಶನ್ಗೆ ಒಂದು ಶಕ್ತಿಯುತ ಮತ್ತು ಸಹಜವಾದ ವಿಧಾನವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ: ಇದೀಗ ಉತ್ತಮವಾಗಿ ಕಾಣುವ ಆಯ್ಕೆಯನ್ನು ಮಾಡಿ. ಸರಿಯಾದ ರಚನೆಯನ್ನು ಹೊಂದಿರುವ ಸಮಸ್ಯೆಗಳಿಗೆ - ಗ್ರೀಡಿ ಚಾಯ್ಸ್ ಪ್ರಾಪರ್ಟಿ ಮತ್ತು ಆಪ್ಟಿಮಲ್ ಸಬ್ಸ್ಟ್ರಕ್ಚರ್ - ಈ ಸರಳ ತಂತ್ರವು ಜಾಗತಿಕ ಆಪ್ಟಿಮಮ್ಗೆ ದಕ್ಷ ಮತ್ತು ಸೊಗಸಾದ ಮಾರ್ಗವನ್ನು ನೀಡುತ್ತದೆ.
ಡೈಕ್ಸ್ಟ್ರಾ, ಕ್ರುಸ್ಕಲ್, ಮತ್ತು ಹಫ್ಮನ್ ಕೋಡಿಂಗ್ನಂತಹ ಅಲ್ಗಾರಿದಮ್ಗಳು ಗ್ರೀಡಿ ವಿನ್ಯಾಸದ ನೈಜ-ಪ್ರಪಂಚದ ಪ್ರಭಾವಕ್ಕೆ ಸಾಕ್ಷಿಯಾಗಿವೆ. ಆದಾಗ್ಯೂ, ಸರಳತೆಯ ಆಕರ್ಷಣೆಯು ಒಂದು ಬಲೆಯಾಗಿರಬಹುದು. ಸಮಸ್ಯೆಯ ರಚನೆಯನ್ನು ಎಚ್ಚರಿಕೆಯಿಂದ ಪರಿಗಣಿಸದೆ ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಅನ್ವಯಿಸುವುದು ತಪ್ಪಾದ, ಉಪ-ಆಪ್ಟಿಮಲ್ ಪರಿಹಾರಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು.
ಗ್ರೀಡಿ ಅಲ್ಗಾರಿದಮ್ಗಳ ಅಧ್ಯಯನದಿಂದ ಅಂತಿಮ ಪಾಠವು ಕೇವಲ ಕೋಡ್ಗಿಂತ ಹೆಚ್ಚಾಗಿದೆ; ಇದು ವಿಶ್ಲೇಷಣಾತ್ಮಕ ಕಠಿಣತೆಯ ಬಗ್ಗೆ. ಇದು ನಮ್ಮ ಊಹೆಗಳನ್ನು ಪ್ರಶ್ನಿಸಲು, ಪ್ರತಿದಾಖಲೆಗಳನ್ನು ಹುಡುಕಲು, ಮತ್ತು ಪರಿಹಾರಕ್ಕೆ ಬದ್ಧರಾಗುವ ಮೊದಲು ಸಮಸ್ಯೆಯ ಆಳವಾದ ರಚನೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ನಮಗೆ ಕಲಿಸುತ್ತದೆ. ಆಪ್ಟಿಮೈಸೇಶನ್ ಜಗತ್ತಿನಲ್ಲಿ, ಯಾವಾಗ ಗ್ರೀಡಿ ಆಗಬಾರದು ಎಂದು ತಿಳಿದುಕೊಳ್ಳುವುದು ಯಾವಾಗ ಆಗಬೇಕೆಂದು ತಿಳಿದುಕೊಳ್ಳುವಷ್ಟೇ ಮೌಲ್ಯಯುತವಾಗಿದೆ.